package extend.db.base;

import java.util.ArrayList;
import java.util.LinkedHashMap;

/**
 * sql 哈希列表
 *<B>说明：</B>
 *<pre>
 * 略
 *</pre>
 *<B>示例：</B>
 *<pre>
 *  略
 *</pre>
 *<B>日志：</B>
 *<pre>
 *  略
 *</pre>
 *<B>注意事项：</B>
 *<pre>
 *  略
 *</pre>
 */
public class SqlMap extends LinkedHashMap<String,Object>
{

    /**
     * 当前序号
     */
    private int maxIndex = -1;

    /**
     * 获取下一个序号
     *<B>说明：</B>
     *<pre>
     *  略
     *</pre>
     * @return
     */
    public String getNextIndex()
    {
        this.maxIndex++;

        return String.valueOf(this.maxIndex);
    }

    public static SqlMap make()
    {
        return new SqlMap();
    }

    public static SqlMap mExp(String key,String expName,Object expValue)
    {
        return SqlMap.make().exp(key,expName,expValue);
    }

    public static SqlMap mSet(String key,Object value)
    {
        SqlMap sqlMap = SqlMap.make();
        sqlMap.put(key,value);

        return sqlMap;
    }


    public static SqlMap mAdd(String key,Object value)
    {
        SqlMap sqlMap = SqlMap.make();
        sqlMap.put(key,value);

        return sqlMap;
    }

    /**
     * 添加value
     *<B>说明：</B>
     *<pre>
     *  key 自动生成
     *</pre>
     * @return
     */
    public SqlMap add(Object... values)
    {
        for (int i = 0; i <  values.length; i++) {
            this.put(this.getNextIndex(),values[i]);
        }

        return this;
    }

    /**
     * 添加value
     *<B>说明：</B>
     *<pre>
     *  key 自动生成
     *</pre>
     * @return
     */
    public SqlMap set(String key,Object value)
    {
        this.put(key,value);

        return this;
    }

    /**
     *　添加表达式格式
     * @param key
     * @param expName
     * @param expValue
     * @return
     */
    public SqlMap exp(String key,String expName,Object expValue)
    {
        ArrayList keyValue = new ArrayList();
        keyValue.add(expName);
        keyValue.add(expValue);
        this.put(key,keyValue);

        return this;
    }
}
